マルチプロセッシング(https://docs.python.org/2/library/multiprocessing.html)で作成されたスレッド間に3ギガバイトのビット配列(https://pypi.python.org/pypi/bitarray/0.8.1)を共有します。Pythonマルチプロセッシング:共有ビット配列(bitarray 0.8.1)
私はそれを変更せずにビット配列を読みたいだけです。次のpython 2.7コードは本当に大丈夫ですか?どうにかして、ctypes(docs.python.org/2/library/ctypes.html)を使用せずに動作するようです。
import multiprocessing as mp
import bitarray
import time
def f(x):
n = 0
#print shared_arr[n:(10+n)] & shared_arr[n:(10+n)]
print "worker %d started at time %s" % (x, str(time.time()-start_time))
print "running %d. bit %d of shared array is: " % (x, x) +str(shared_arr[n:(10+n)])
time.sleep(2)
print "ending %d at time %s" %(x, str(time.time()-start_time))
return x*x
def main():
print "The number of cpu is %d" % (mp.cpu_count())
num_cpu_core = mp.cpu_count()
n = 0
global shared_arr
global start_time
start_time = time.time()
shared_arr = bitarray.bitarray(18)
shared_arr[:] = 0
shared_arr[(n+5):(n+7)] = 1
a = 10
pool = mp.Pool(processes = num_cpu_core) # not saving one for the master process
pool.map_async(f, range(10))
pool.close()
pool.join()
main()
マルチプロセッシングはスレッドを作成しないので、* processes *を作成します。 –