মাল্টিপ্রসেসিং মডিউলটি ব্যবহারের জন্য আমি ভাগ করে নেওয়া মেমরিতে একটি নমপি অ্যারে ব্যবহার করতে চাই। অসুবিধা এটিকে একটি ছদ্মবেশ অ্যারের মতো ব্যবহার করছে, কেবল সাইকাইপ অ্যারে হিসাবে নয়।
from multiprocessing import Process, Array
import scipy
def f(a):
a[0] = -a[0]
if __name__ == '__main__':
# Create the array
N = int(10)
unshared_arr = scipy.rand(N)
arr = Array('d', unshared_arr)
print "Originally, the first two elements of arr = %s"%(arr[:2])
# Create, start, and finish the child processes
p = Process(target=f, args=(arr,))
p.start()
p.join()
# Printing out the changed values
print "Now, the first two elements of arr = %s"%arr[:2]
এটি আউটপুট উত্পাদন করে যেমন:
Originally, the first two elements of arr = [0.3518653236697369, 0.517794725524976]
Now, the first two elements of arr = [-0.3518653236697369, 0.517794725524976]
অ্যারেটি একটি টাইপ পদ্ধতিতে অ্যাক্সেস করা যায়, উদাহরণস্বরূপ arr[i]
বোধ করে। তবে এটি কোনও নম্র অ্যারে নয় এবং আমি -1*arr
, বা এর মতো অপারেশন করতে পারি না arr.sum()
। আমি মনে করি যে একটি সমাধান হ'ল সিটিপস অ্যারেটিকে একটি আঙ্কুল অ্যারেতে রূপান্তর করা। তবে (এই কাজটি করতে সক্ষম না হওয়া), আমি বিশ্বাস করি না এটি আর ভাগ করা হবে।
এটি সাধারণ সমস্যা হতে পারে তার একটি স্ট্যান্ডার্ড সমাধান হবে বলে মনে হয়।
subprocess
বরং জিজ্ঞাসা করছে multiprocessing
।