ACIL FM
Dark
Refresh
Current DIR:
/opt/alt/python38/lib64/python3.8/multiprocessing
/
opt
alt
python38
lib64
python3.8
multiprocessing
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
dummy
-
chmod
Open
Rename
Delete
__pycache__
-
chmod
Open
Rename
Delete
connection.py
30.94 MB
chmod
View
DL
Edit
Rename
Delete
context.py
10.99 MB
chmod
View
DL
Edit
Rename
Delete
forkserver.py
12.24 MB
chmod
View
DL
Edit
Rename
Delete
heap.py
11.35 MB
chmod
View
DL
Edit
Rename
Delete
managers.py
47.77 MB
chmod
View
DL
Edit
Rename
Delete
pool.py
31.75 MB
chmod
View
DL
Edit
Rename
Delete
popen_fork.py
2.51 MB
chmod
View
DL
Edit
Rename
Delete
popen_forkserver.py
2.18 MB
chmod
View
DL
Edit
Rename
Delete
popen_spawn_posix.py
1.98 MB
chmod
View
DL
Edit
Rename
Delete
popen_spawn_win32.py
3.92 MB
chmod
View
DL
Edit
Rename
Delete
process.py
11.72 MB
chmod
View
DL
Edit
Rename
Delete
queues.py
11.42 MB
chmod
View
DL
Edit
Rename
Delete
reduction.py
9.29 MB
chmod
View
DL
Edit
Rename
Delete
resource_sharer.py
5.23 MB
chmod
View
DL
Edit
Rename
Delete
resource_tracker.py
8.41 MB
chmod
View
DL
Edit
Rename
Delete
sharedctypes.py
6.16 MB
chmod
View
DL
Edit
Rename
Delete
shared_memory.py
17.01 MB
chmod
View
DL
Edit
Rename
Delete
spawn.py
9.08 MB
chmod
View
DL
Edit
Rename
Delete
synchronize.py
11.34 MB
chmod
View
DL
Edit
Rename
Delete
util.py
13.62 MB
chmod
View
DL
Edit
Rename
Delete
__init__.py
916 B
chmod
View
DL
Edit
Rename
Delete
Edit file: /opt/alt/python38/lib64/python3.8/multiprocessing/resource_sharer.py
# # We use a background thread for sharing fds on Unix, and for sharing sockets on # Windows. # # A client which wants to pickle a resource registers it with the resource # sharer and gets an identifier in return. The unpickling process will connect # to the resource sharer, sends the identifier and its pid, and then receives # the resource. # import os import signal import socket import sys import threading from . import process from .context import reduction from . import util __all__ = ['stop'] if sys.platform == 'win32': __all__ += ['DupSocket'] class DupSocket(object): '''Picklable wrapper for a socket.''' def __init__(self, sock): new_sock = sock.dup() def send(conn, pid): share = new_sock.share(pid) conn.send_bytes(share) self._id = _resource_sharer.register(send, new_sock.close) def detach(self): '''Get the socket. This should only be called once.''' with _resource_sharer.get_connection(self._id) as conn: share = conn.recv_bytes() return socket.fromshare(share) else: __all__ += ['DupFd'] class DupFd(object): '''Wrapper for fd which can be used at any time.''' def __init__(self, fd): new_fd = os.dup(fd) def send(conn, pid): reduction.send_handle(conn, new_fd, pid) def close(): os.close(new_fd) self._id = _resource_sharer.register(send, close) def detach(self): '''Get the fd. This should only be called once.''' with _resource_sharer.get_connection(self._id) as conn: return reduction.recv_handle(conn) class _ResourceSharer(object): '''Manager for resources using background thread.''' def __init__(self): self._key = 0 self._cache = {} self._old_locks = [] self._lock = threading.Lock() self._listener = None self._address = None self._thread = None util.register_after_fork(self, _ResourceSharer._afterfork) def register(self, send, close): '''Register resource, returning an identifier.''' with self._lock: if self._address is None: self._start() self._key += 1 self._cache[self._key] = (send, close) return (self._address, self._key) @staticmethod def get_connection(ident): '''Return connection from which to receive identified resource.''' from .connection import Client address, key = ident c = Client(address, authkey=process.current_process().authkey) c.send((key, os.getpid())) return c def stop(self, timeout=None): '''Stop the background thread and clear registered resources.''' from .connection import Client with self._lock: if self._address is not None: c = Client(self._address, authkey=process.current_process().authkey) c.send(None) c.close() self._thread.join(timeout) if self._thread.is_alive(): util.sub_warning('_ResourceSharer thread did ' 'not stop when asked') self._listener.close() self._thread = None self._address = None self._listener = None for key, (send, close) in self._cache.items(): close() self._cache.clear() def _afterfork(self): for key, (send, close) in self._cache.items(): close() self._cache.clear() # If self._lock was locked at the time of the fork, it may be broken # -- see issue 6721. Replace it without letting it be gc'ed. self._old_locks.append(self._lock) self._lock = threading.Lock() if self._listener is not None: self._listener.close() self._listener = None self._address = None self._thread = None def _start(self): from .connection import Listener assert self._listener is None, "Already have Listener" util.debug('starting listener and thread for sending handles') self._listener = Listener(authkey=process.current_process().authkey) self._address = self._listener.address t = threading.Thread(target=self._serve) t.daemon = True t.start() self._thread = t def _serve(self): if hasattr(signal, 'pthread_sigmask'): signal.pthread_sigmask(signal.SIG_BLOCK, signal.valid_signals()) while 1: try: with self._listener.accept() as conn: msg = conn.recv() if msg is None: break key, destination_pid = msg send, close = self._cache.pop(key) try: send(conn, destination_pid) finally: close() except: if not util.is_exiting(): sys.excepthook(*sys.exc_info()) _resource_sharer = _ResourceSharer() stop = _resource_sharer.stop
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply