สำหรับ i in range (k) code cycle optimization ใน python [duplicate]

Oct 26 2020

ฉันกำลังพยายามสร้าง G-code โดยใช้ python ฉันเขียนคำแนะนำตามค่าพิกเซลของภาพระดับสีเทา แต่ถ้าฉันต้องการทำงานกับภาพขนาดใหญ่จะต้องใช้เวลาตลอดไปในการรวบรวมรหัส โปรแกรม G-code บางโปรแกรมประมวลผลภาพเหล่านี้ในไม่กี่วินาที ฉันจะทำให้โปรแกรมนี้เร็วขึ้นได้อย่างไร

ขอขอบคุณสำหรับเวลาของคุณ.

gray_height = gray.shape[0]
gray_length = gray.shape[1]
print("length", gray_length)
print("height", gray_height)
for i in range(gray_length):
    j=0
    for j in range(gray_height):

        k = 'G01 X{}'.format(round(i*0.1,3)) + ' Y{}'.format(round(j*0.1,3)) + '\n' +'G01 Z -10' +'\n' +'G04 {}'.format(round(gray[i,j],2)) +'\n'  + 'G01 Z 10' +'\n'
        with open("file.txt", "a") as a_file:
            a_file.write(k)
    

คำตอบ

kojiro Oct 26 2020 at 15:17

คุณสามารถแสดงมูลค่ารวมของทั้งหมดkในเครื่องกำเนิดไฟฟ้า:

k = (f'''G01 X{round(i*0.1,3)} Y{round(j*0.1,3)}
G01 Z -10
G04 {round(gray[i,j],2)
G01 Z 10
''' for i in range(gray_length) for j in range(gray_height))

และเขียนลงในไฟล์พร้อมกัน:

with open('file.txt', 'a') as a_file:
    a_file.writelines(k)

(ฉันใช้ fstrings แทน str.format เพราะฉันคิดว่ามันช่วยเพิ่มความสามารถในการอ่านได้อย่างมากมันใช้ได้กับ Python เวอร์ชันล่าสุดทั้งหมด)

สิ่งที่ได้รับหลัก ๆ ตามที่หลาย ๆ คนกล่าวถึงในความคิดเห็นคือคุณจะไม่เปิดปิดและเปิดไฟล์อีกครั้งในการวนซ้ำภายในแต่ละครั้ง