"ব্ল্যাক বক্স" সরঞ্জামটি সন্ধান করার আগে, এটি সমান্তরাল "জেনেরিক" পাইথন ফাংশনে কার্যকর করতে ব্যবহার করা যেতে পারে, আমি কীভাবে my_function()
হাত দিয়ে সমান্তরাল হতে পারি তা বিশ্লেষণ করার পরামর্শ দেব ।
প্রথমে my_function(v)
পাইথন for
লুপের ওভারহেডের সাথে মৃত্যুদন্ড কার্যকর করার সময়টির তুলনা করুন : [সি] পাইথন for
লুপগুলি বেশ ধীর, সুতরাং এতে ব্যয় করা সময় my_function()
নগণ্য হতে পারে।
>>> timeit.timeit('pass', number=1000000)
0.01692986488342285
>>> timeit.timeit('for i in range(10): pass', number=1000000)
0.47521495819091797
>>> timeit.timeit('for i in xrange(10): pass', number=1000000)
0.42337894439697266
দ্বিতীয় চেকের জন্য যদি সেখানে কোনও সাধারণ ভেক্টর বাস্তবায়ন হয় my_function(v)
যার জন্য লুপগুলির প্রয়োজন হয় না:F[:] = my_vector_function(X)
(এই দুটি প্রথম বিষয়টি বেশ তুচ্ছ, আমি যদি এখানে কেবল সম্পূর্ণতার জন্য উল্লেখ করেছি তবে আমাকে ক্ষমা করুন))
তৃতীয় এবং সবচেয়ে গুরুত্বপূর্ণ পয়েন্ট, CPython বাস্তবায়নের জন্য অন্তত কিনা চেক করা হল my_function
এটা অধিকাংশ সময় ব্যয় ভিতরে বা বাহিরে বিশ্বব্যাপী অনুবাদক লক , বা Gil । যদি জিআইএল এর বাইরে সময় ব্যয় করা হয় তবে threading
স্ট্যান্ডার্ড লাইব্রেরি মডিউলটি ব্যবহার করা উচিত। ( এখানে একটি উদাহরণ)। বিটিডাব্লু, my_function()
কেবলমাত্র জিআইএল প্রকাশের জন্য সি-এক্সটেনশন হিসাবে লেখার কথা ভাবতে পারে ।
অবশেষে, my_function()
জিআইএল মুক্তি না দিলে , কেউ multiprocessing
মডিউলটি ব্যবহার করতে পারে ।
তথ্যসূত্র: সমান্তরাল কার্যনির্বাহীকরণে পাইথন ডক্স এবং সমান্তরাল প্রক্রিয়াকরণে নিমপি / স্কিপি ইন্ট্রো ।