I'm trying to run the following (naturally, I have FAR more zip codes and a much longer list of properties, both truncated for speed of the example):

zipProperties = {
                 EntityProperty["ZIPCode", "AggregateHouseholdIncome"], 
                 EntityProperty["ZIPCode", "AverageHouseValue"], 
                 EntityProperty["ZIPCode", "Employment"], 
                 EntityProperty["ZIPCode", "Population",{"Gender"->"Female"}], 
                 EntityProperty["ZIPCode", "Population",{"Gender"->"Male"}]
zipData = ParallelMap[
     {zip = #},
     Join[{zip}, Entity["ZIPCode", zip][#]& /@ zipProperties]
     ] &,

and I'm getting:

(kernel 1) CreateFile::filex :  C:\Users\user1\AppData\Roaming\Mathematica\Knowledgebase\u8cfm00s2kat\u8cfm00s2kat-1709886844729300217.dat.lock already exists.
(kernel 3) EntityValue::nodat :  Unable to download data. Some or all results may be missing.
(kernel 8) ...more of the same...

I'm assuming the nodat error is just a legitimate absence of data, though it could also signify a lack of a result from too many simultaneous requests. I've had that happen before with FinancialData and had to go back and re-retreive values for Missing[] results where I knew that they HAD to exist (like closing prices for valid ticker symbols on dates when trading occurred).

Anyone knows how to get Wolfram curated data from a parallelized process without running into locks?

Thanks in advance!

  • 1
    $\begingroup$ For a workaround, try ParallelEvaluate[EntityFramework`$UseFileCache = False]; $\endgroup$
    – ilian
    Aug 5, 2017 at 16:24
  • $\begingroup$ Interesting workaround. Thank you. Though, ideally, I don't want to stop using cache. Otherwise, subsequent runs on same zip codes will always go to reacquire data, wasting lots of time. A different list of zip codes could have many of the zip codes which I've already ran. I guess I could create my own cache. Gives me something to think about. $\endgroup$ Aug 6, 2017 at 17:34


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.