Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在后台进程中取消勾选python字典_Python_Dictionary_Pickle_Pydub - Fatal编程技术网

在后台进程中取消勾选python字典

在后台进程中取消勾选python字典,python,dictionary,pickle,pydub,Python,Dictionary,Pickle,Pydub,我已经编写了一个类似于shazam应用程序的python脚本。它捕获15秒的音频,然后尝试猜测它对应于数据库中的哪首歌曲。我已经将我们的歌曲数据库(一个字典字典,其中每个键代表歌曲名称)存储为pickle文件,称之为song_db.p,因为创建数据库实际上需要几个小时,包含大约100首歌曲。当我运行我的“Shazam应用程序”时,以下是步骤: 当用户希望开始记录15秒的样本时,按enter键 完成后,我将取消我的数据库 然后我调用一个guess_song函数来尝试猜测歌曲 步骤2大约需要45秒才

我已经编写了一个类似于shazam应用程序的python脚本。它捕获15秒的音频,然后尝试猜测它对应于数据库中的哪首歌曲。我已经将我们的歌曲数据库(一个字典字典,其中每个键代表歌曲名称)存储为pickle文件,称之为song_db.p,因为创建数据库实际上需要几个小时,包含大约100首歌曲。当我运行我的“Shazam应用程序”时,以下是步骤:

  • 当用户希望开始记录15秒的样本时,按enter键
  • 完成后,我将取消我的数据库
  • 然后我调用一个guess_song函数来尝试猜测歌曲
  • 步骤2大约需要45秒才能完成。不太好!我想做的是,一旦用户运行程序或在录制的同时开始取消勾选我的数据库(这至少可以节省15秒,因为这是录制长度),因为两者是独立的。如何在后台进程中运行取消勾选函数,该进程将与录制歌曲和主函数中的任何函数一起运行,但在取消勾选完成之前,我不想调用guess_song

    这是我写的代码,它给我带来了大约5-10秒的提升,但我正在与录音并行运行(不是在后台)。我想我肯定能做得更好

    from multiprocessing import Process
    
    def run_in_parallel(*fns):
        proc = []
        for fn in fns:
            p = Process(target=fn)
            p.start()
            proc.append(p)
        for p in proc:
            p.join()
    
    我在我的主要函数中将其称为:

        run_in_parallel(recording_file = record_song(), song_db = get_db())
    
    其中record_song()是自解释的,get_db执行数据库的取消勾选