পাইথন, 358 281 268 221 194 বাইট
একরঙা তাই গত বছর। এটি দুটি রঙের সিপিইউ গ্রাফ অর্জন করতে একাধিক প্রক্রিয়া এবং সিস্কল ব্যবহার করে !
import os,time
A='%-99o'%int('t12q2lxqkap48euoej9429cstbnazl63ubyryteo49u',36)
for i in'0123456':
t=os.fork()
while t<1:T=int(time.time())%50;(time.sleep,(id,os.urandom)[i<A[T+49]])[i<A[T]](1)
ক্রিয়াকলাপ পর্যবেক্ষণ (ওএস এক্স 10.9) থেকে আউটপুট:
মেনুমিটারগুলি থেকে আউটপুট:
সমস্ত আউটপুটগুলি 1 এস এর আপডেট গতির সাথে উত্পন্ন হয়েছিল। কোনও উল্লেখযোগ্য ব্যাকগ্রাউন্ড টাস্ক চলছিল না, যদিও এই আউটপুটটি খুব সহজেই কোনও একক থ্রেডেড সিপিইউ কার্যকে পরাজিত করে।
এই কোডটি ধরে নিয়েছে আপনার কাছে 8 টি কোর রয়েছে। কম / আরও কিছুতে এটি সংশোধন করা বেশ সহজ হওয়া উচিত। এটি লিনাক্স / ইউএনআইএক্স সিস্টেমে পোর্টেবল (যদিও এটি কেবলমাত্র ওএস এক্স-তে পরীক্ষা করা হয়েছে), এবং কোনও সিপিইউ মনিটরের জন্য একই দুটি রঙের আউটপুট উত্পন্ন করা উচিত যা ব্যবহারকারী সিস্টেম সিপিইউ থেকে পৃথক করতে পারে।
মূলত, এটি সাতটি প্রক্রিয়া বন্ধ করে কাজ করে, যার প্রত্যেকটি 1 সেকেন্ড ঘুমানো, ইউজারমোডে কাটনা বা কার্নেল স্পিনিং করতে বেছে নেবে। কার্নেল মোডে স্পিনিংটি বৃহত গ্লোব থেকে ডেটা অনুরোধ করে অর্জন করা হয় /dev/urandom
, যা ড্রাইভারকে /dev/urandom
"সিস্টেম" সিপিইউ চক্র ব্যয় করতে বাধ্য করে ।
সম্পাদিত [07/21]: fork()
পরিবর্তে ব্যবহার করে উল্লেখযোগ্যভাবে সংক্ষিপ্ত করা হয়েছে multiprocessing.Process
( /dev/urandom
কেবলমাত্র * NIX সিস্টেমে কাজ করে তাই এটি বহনযোগ্যতা হ্রাস করে না)। তবে নোট করুন যে প্রোগ্রামটি এখন পটভূমির কাজগুলিকে উত্সাহ দেয় ; আপনার killall Python
সিপিইউ-ইটারদের থেকে মুক্তি পেতে (বা অনুরূপ) হতে পারে।
আমি আরও কয়েকটি চিঠি বাস্তবায়নে প্রতিরোধ করতে পারিনি। আমি 16 টি চিঠি এবং আরও কয়েকটি চিহ্ন পেয়েছি:
সম্পূর্ণ বর্ণমালা হ'ল "ACDFHILMNOPTUVWY", চিহ্ন সহ "._ ~ / \"। সম্ভবত আরও অনেকগুলি অক্ষর রয়েছে যা প্রতিনিধিত্ব করতে পারে।
অতিরিক্ত চিঠির জন্য পুরোপুরি অবারিত কোড:
from time import*
from multiprocessing import*
chars6 = {
'A': ('123456654321',
'000123321000'),
'C': ('344556666666',
'321110000000'),
'D': ('666666655443',
'000000011123'),
'F': ('66666666666666',
'00002222244444'),
'H': ('666664444466666',
'000002222200000'),
'I': ('66666',
'00000'),
'L': ('666662222222',
'000000000000'),
'M': ('6665544334455666',
'0004321001234000'),
'N': ('66665544336666',
'00003322110000'),
'O': ('3445556666555443',
'3221110000111223'),
'P': ('666666666555',
'000003333444'),
'T': ('777776666677777',
'444440000044444'),
'U': ('6666322236666',
'4211000001124'),
'V': ('66654322345666',
'33321000012333'),
'W': ('66542466424566',
'43210133101234'),
'Y': ('66665433456666',
'44333000033344'),
'_': ('1111111111',
'0000000000'),
' ': ('000',
'000'),
'.': ('12221',
'10001'),
'~': ('44445544334444',
'11223322112233'),
'/': ('2234566',
'0012344'),
'\\': ('6654322',
'4432100'),
}
s = 'ANCHOVY '
A = '000'.join(chars6[t][0] for t in s)
B = '000'.join(chars6[t][1] for t in s)
t=time()
f=open('/dev/urandom')
def F(n):
while 1:T=int(time()-t)%len(A);[sleep,[].count,lambda x:f.read(4**9)][(n<int(A[T]))+(n<int(B[T]))](1)
for i in range(7):Process(target=F,args=(i,)).start()
F(7)